ga.view.config
Class SettingsDialog2

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by java.awt.Window
              extended by java.awt.Dialog
                  extended by javax.swing.JDialog
                      extended by ga.view.config.SettingsDialog2
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants

public final class SettingsDialog2
extends javax.swing.JDialog

This is an extended SettingsDialog for the Furny app. Further doc is taken from SettingsDialog. PropertiesDialog provides an interface to make use of the GameSettings class. The GameSettings object is still created by the client application, and passed during construction.

Author:
Mark Powell, Eric Woroshow, Joshua Slack - reworked for proper use of GL commands.
See Also:
AppSettings, Serialized Form

Nested Class Summary
private  class SettingsDialog2.DisplayModeSorter
          Utility class for sorting DisplayModes.
static interface SettingsDialog2.SelectionListener
           
 
Nested classes/interfaces inherited from class javax.swing.JDialog
javax.swing.JDialog.AccessibleJDialog
 
Nested classes/interfaces inherited from class java.awt.Dialog
java.awt.Dialog.AccessibleAWTDialog, java.awt.Dialog.ModalExclusionType, java.awt.Dialog.ModalityType
 
Nested classes/interfaces inherited from class java.awt.Window
java.awt.Window.AccessibleAWTWindow
 
Nested classes/interfaces inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
private  javax.swing.JComboBox antialiasCombo
           
static int APPROVE_SELECTION
           
static int CANCEL_SELECTION
           
private  javax.swing.JComboBox colorDepthCombo
           
private  javax.swing.JComboBox displayFreqCombo
           
private  javax.swing.JComboBox displayResCombo
           
private  java.lang.String fileToSave
           
private  javax.swing.JCheckBox fullscreenBox
           
private  javax.swing.JCheckBox hqMaterialBox
           
private  javax.swing.JLabel icon
           
private  java.net.URL imageFile
           
private  javax.swing.JCheckBox lightScatteringBox
           
private static java.util.logging.Logger LOGGER
           
private  java.awt.DisplayMode[] modes
           
static int NO_SELECTION
           
private  int selection
           
private  SettingsDialog2.SelectionListener selectionListener
           
private static long serialVersionUID
           
private  javax.swing.JCheckBox shadowsBox
           
private  javax.swing.JCheckBox showCursorBox
           
private  javax.swing.JCheckBox showStatisticsBox
           
private  com.jme3.system.AppSettings source
           
private  javax.swing.JCheckBox ssaoBox
           
private  javax.swing.JCheckBox vsyncBox
           
private  java.lang.String[] windowedResolutions
           
 
Fields inherited from class javax.swing.JDialog
accessibleContext, rootPane, rootPaneCheckingEnabled
 
Fields inherited from class java.awt.Dialog
DEFAULT_MODALITY_TYPE
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface javax.swing.WindowConstants
DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, EXIT_ON_CLOSE, HIDE_ON_CLOSE
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
SettingsDialog2(com.jme3.system.AppSettings source, java.lang.String imageFile, boolean loadSettings)
          Constructor for the PropertiesDialog.
SettingsDialog2(com.jme3.system.AppSettings source, java.net.URL imageFile, boolean loadSettings)
          Constructor for the PropertiesDialog.
 
Method Summary
private  void createUI()
          init creates the components to use the dialog.
private static java.lang.String[] getDepths(java.lang.String resolution, java.awt.DisplayMode[] modes)
          Returns every possible bit depth for the given resolution.
private static java.lang.String[] getFrequencies(java.lang.String resolution, java.awt.DisplayMode[] modes)
          Returns every possible refresh rate for the given resolution.
private static java.lang.String[] getResolutions(java.awt.DisplayMode[] modes)
          Returns every unique resolution from an array of DisplayModes.
private static java.net.URL getURL(java.lang.String file)
          Utility method for converting a String denoting a file into a URL.
 int getUserSelection()
           
static void main(java.lang.String[] args)
           
private  void safeSetIconImages(java.util.List<? extends java.awt.Image> icons)
           
 void setFileToSave(java.lang.String fileToSave)
          Sets the file where the settings should be saved to.
 void setImage(java.lang.String image)
          setImage sets the background image of the dialog.
 void setImage(java.net.URL image)
          setImage sets the background image of this dialog.
 void setSelectionListener(SettingsDialog2.SelectionListener sl)
           
private  javax.swing.JComboBox setUpRendererChooser()
          setUpRendererChooser sets the list of available renderers.
private  javax.swing.JComboBox setUpResolutionChooser()
          setUpChooser retrieves all available display modes and places them in a JComboBox.
private  void setUserSelection(int selection)
           
 void showDialog()
          showDialog sets this dialog as visble, and brings it to the front.
private static void showError(java.awt.Component parent, java.lang.String message)
           
private  void updateAntialiasChoices()
           
private  void updateDisplayChoices()
          updateDisplayChoices updates the available color depth and display frequency options to match the currently selected resolution.
private  void updateResolutionChoices()
          updateResolutionChoices updates the available resolutions list to match the currently selected window mode (fullscreen or windowed).
private  boolean verifyAndSaveCurrentSelection()
          verifyAndSaveCurrentSelection first verifies that the display mode is valid for this system, and then saves the current selection as a properties.cfg file.
 
Methods inherited from class javax.swing.JDialog
addImpl, createRootPane, dialogInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getGraphics, getJMenuBar, getLayeredPane, getRootPane, getTransferHandler, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, repaint, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, setTransferHandler, update
 
Methods inherited from class java.awt.Dialog
addNotify, getModalityType, getTitle, hide, isModal, isResizable, isUndecorated, setModal, setModalityType, setResizable, setTitle, setUndecorated, setVisible, show, toBack
 
Methods inherited from class java.awt.Window
addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, dispose, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getGraphicsConfiguration, getIconImages, getInputContext, getListeners, getLocale, getModalExclusionType, getMostRecentFocusOwner, getOwnedWindows, getOwner, getOwnerlessWindows, getToolkit, getWarningString, getWindowFocusListeners, getWindowListeners, getWindows, getWindowStateListeners, isActive, isAlwaysOnTop, isAlwaysOnTopSupported, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isShowing, pack, paint, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeNotify, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, reshape, setAlwaysOnTop, setBounds, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setIconImage, setIconImages, setLocationByPlatform, setLocationRelativeTo, setMinimumSize, setModalExclusionType, setSize, setSize, toFront
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isPreferredSizeSet, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resize, resize, setBackground, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setName, setPreferredSize, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

NO_SELECTION

public static final int NO_SELECTION
See Also:
Constant Field Values

APPROVE_SELECTION

public static final int APPROVE_SELECTION
See Also:
Constant Field Values

CANCEL_SELECTION

public static final int CANCEL_SELECTION
See Also:
Constant Field Values

LOGGER

private static final java.util.logging.Logger LOGGER

serialVersionUID

private static final long serialVersionUID
See Also:
Constant Field Values

source

private final com.jme3.system.AppSettings source

imageFile

private final java.net.URL imageFile

modes

private final java.awt.DisplayMode[] modes

windowedResolutions

private final java.lang.String[] windowedResolutions

vsyncBox

private javax.swing.JCheckBox vsyncBox

fullscreenBox

private javax.swing.JCheckBox fullscreenBox

shadowsBox

private javax.swing.JCheckBox shadowsBox

ssaoBox

private javax.swing.JCheckBox ssaoBox

lightScatteringBox

private javax.swing.JCheckBox lightScatteringBox

hqMaterialBox

private javax.swing.JCheckBox hqMaterialBox

showStatisticsBox

private javax.swing.JCheckBox showStatisticsBox

showCursorBox

private javax.swing.JCheckBox showCursorBox

displayResCombo

private javax.swing.JComboBox displayResCombo

colorDepthCombo

private javax.swing.JComboBox colorDepthCombo

displayFreqCombo

private javax.swing.JComboBox displayFreqCombo

antialiasCombo

private javax.swing.JComboBox antialiasCombo

icon

private javax.swing.JLabel icon

selection

private int selection

selectionListener

private SettingsDialog2.SelectionListener selectionListener

fileToSave

private java.lang.String fileToSave
Constructor Detail

SettingsDialog2

public SettingsDialog2(com.jme3.system.AppSettings source,
                       java.lang.String imageFile,
                       boolean loadSettings)
Constructor for the PropertiesDialog. Creates a properties dialog initialized for the primary display.

Parameters:
source - the AppSettings object to use for working with the properties file.
imageFile - the image file to use as the title of the dialog; null will result in to image being displayed
Throws:
java.lang.NullPointerException - if the source is null

SettingsDialog2

public SettingsDialog2(com.jme3.system.AppSettings source,
                       java.net.URL imageFile,
                       boolean loadSettings)
Constructor for the PropertiesDialog. Creates a properties dialog initialized for the primary display.

Parameters:
source - the GameSettings object to use for working with the properties file.
imageFile - the image file to use as the title of the dialog; null will result in to image being displayed
loadSettings -
Throws:
JmeException - if the source is null
Method Detail

setFileToSave

public void setFileToSave(java.lang.String fileToSave)
Sets the file where the settings should be saved to.

Parameters:
fileToSave - The file name.
Since:
12.08.2012

setSelectionListener

public void setSelectionListener(SettingsDialog2.SelectionListener sl)

getUserSelection

public int getUserSelection()

setUserSelection

private void setUserSelection(int selection)

setImage

public void setImage(java.lang.String image)
setImage sets the background image of the dialog.

Parameters:
image - String representing the image file.

setImage

public void setImage(java.net.URL image)
setImage sets the background image of this dialog.

Parameters:
image - URL pointing to the image file.

showDialog

public void showDialog()
showDialog sets this dialog as visble, and brings it to the front.


createUI

private void createUI()
init creates the components to use the dialog.


safeSetIconImages

private void safeSetIconImages(java.util.List<? extends java.awt.Image> icons)

verifyAndSaveCurrentSelection

private boolean verifyAndSaveCurrentSelection()
verifyAndSaveCurrentSelection first verifies that the display mode is valid for this system, and then saves the current selection as a properties.cfg file.

Returns:
if the selection is valid

setUpResolutionChooser

private javax.swing.JComboBox setUpResolutionChooser()
setUpChooser retrieves all available display modes and places them in a JComboBox. The resolution specified by GameSettings is used as the default value.

Returns:
the combo box of display modes.

setUpRendererChooser

private javax.swing.JComboBox setUpRendererChooser()
setUpRendererChooser sets the list of available renderers. Data is obtained from the DisplaySystem class. The renderer specified by GameSettings is used as the default value.

Returns:
the list of renderers.

updateDisplayChoices

private void updateDisplayChoices()
updateDisplayChoices updates the available color depth and display frequency options to match the currently selected resolution.


updateResolutionChoices

private void updateResolutionChoices()
updateResolutionChoices updates the available resolutions list to match the currently selected window mode (fullscreen or windowed). It then sets up a list of standard options (if windowed) or calls updateDisplayChoices (if fullscreen).


updateAntialiasChoices

private void updateAntialiasChoices()

getURL

private static java.net.URL getURL(java.lang.String file)
Utility method for converting a String denoting a file into a URL.

Returns:
a URL pointing to the file or null

showError

private static void showError(java.awt.Component parent,
                              java.lang.String message)

getResolutions

private static java.lang.String[] getResolutions(java.awt.DisplayMode[] modes)
Returns every unique resolution from an array of DisplayModes.


getDepths

private static java.lang.String[] getDepths(java.lang.String resolution,
                                            java.awt.DisplayMode[] modes)
Returns every possible bit depth for the given resolution.


getFrequencies

private static java.lang.String[] getFrequencies(java.lang.String resolution,
                                                 java.awt.DisplayMode[] modes)
Returns every possible refresh rate for the given resolution.


main

public static void main(java.lang.String[] args)